巧用杨辉三角求二项展开式的系数
标签: C语言 杨辉三角 二项式展开式
by 小威威
1.引入
我们知道,求二项式展开式系数可根据牛顿的二项式定理,即利用组合数求系数。其实,二项式展开式系数其实也是满足杨辉三角的。
在高中的时候,我们一般用组合数求二项式展开式系数,但是对于编程,这一方法就显得十分勉强。因为当n较大时,n的阶乘非常大,很难有数据类型能够存储。虽然用杨辉三角的方法也会出现类似情况,但是杨辉三角有挽回的余地,阶乘根本没有挽回的余地。
2.实例
例题如下:
给出一个多项式(x+y)^K,询问x^n * y^m的系数
输入两个数n, m。 K为n+m的和。n,m均不超过100
因为系数可能非常大,所以要求输出模10007后的结果
样例输入
1 2
样例输出
3
这道题本质上就是求二项式展开式的某个系数。起初我的第一反应就是通过求组合数来求解系数,我用递归构造了一个阶乘,发现超时了;我就把递归改成for循环,虽然不超时了,但当n较大时,结果不正确,说明数据超过数据类型所能承受的范围之外了。
所以,我也很无奈地改变方法,用杨辉三角。
首先是构造杨辉三角,杨辉三角的行数是m+n+1(自己在草稿纸上画出杨辉三角并将其与二项式展开式对应便可发现规律)。
然后就是输出杨辉三角中对应位置的数值。嗯,就这么简单。现在放代码: